闲扯
单调队列优化 $DP$ 的第一题,结果死在了一些很奇怪的操作上。。。
题面
Solution
定义 $dp_i$ 表示考虑了前 $i$ 个数,能够选取的最大价值。
因为最多只能连续选 $k$ 个,所以我们可以在 $[i-k,i-1]$ 中选取一个断点 $j$ ,表示这个点不选,那么此时 $dp_i=\min(dp_{j-1}-sum_j)+sum[i]$ 。
这时我们找到的 $dp_i$ 时端点 $i$ 必选的情况,不能代表所有的情况,所以对 $dp_i,dp_{i-1}$ 取一个 $\max$ ,这样就可以包含考虑前 $i$ 个的所有情况了。
Code
1 |
|
总结
蒟蒻的第一道用单调队列优化 $DP$ 的题,但绝不是最后一道。
这道题还是请教的机房里的 $Dalao$ $@jklover$ ,但考场上呢?
所以还是要加油强化自己的能力啊!!!